home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 5225 < prev    next >
Encoding:
Text File  |  1996-08-05  |  2.7 KB  |  114 lines

  1. Path: altair.dur.ac.uk!d51qvn
  2. From: P D Johnson <P.D.Johnson@durham.ac.uk>
  3. Newsgroups: comp.lang.c
  4. Subject: Re: RETURN ();
  5. Date: 9 Feb 1996 00:32:07 GMT
  6. Organization: University of Durham, Durham, UK.
  7. Message-ID: <4fe4m7$53m@mercury.dur.ac.uk>
  8. References: <DMFxxq.7M7@emi.net>
  9. NNTP-Posting-Host: altair.dur.ac.uk
  10. X-Newsreader: TIN [version 1.2 PL2]
  11.  
  12. samstar@emi.net wrote:
  13. : Is there a way to return muliple values to main from a seperate function ?
  14.  
  15. : ex :
  16.  
  17. : int main(void)
  18. : {
  19. :   Input_data();
  20. :   printf("Here all the input data");
  21. :   
  22. :   return 0;
  23. : }
  24.  
  25. : int Input_data()
  26. : {
  27. :   x=5,y=30,z=10    /* These were gotten by asking questions */
  28. :             /* using printf / scanf/fgets (what ever)  */
  29. :             /*point is they are gotten by question      */
  30.  
  31. : return(x,y,z);
  32. : }
  33.  
  34. : how will main be able to see these values ?
  35.  
  36. : I tried this in main didn't help :
  37.  
  38. : int main(x,y,z)
  39. : {
  40. : ect...
  41. : }
  42.  
  43. : if anyone can help... please email me at samstar@emi.net
  44.  
  45.  
  46. :                         thanks....
  47.  
  48. :                         samstar
  49.  
  50.  
  51. No, NO, NO, NO, NO ........
  52.  
  53. Have you tried reading a book on C? You seem to have a lack of 
  54. understanding of how variables work in C. You can not even start to write 
  55. a program to do this until you have sorted out the basics of variables 
  56. and variable scope. 
  57.  
  58. Basically in C you declare a variable with a line like 
  59.  
  60. int x;
  61.  
  62. You can now write code like x=10; x=5; but only in the function were you 
  63. declared the variable. What you want to do is pass back values from one 
  64. function to another. First of all, for one value this is easy as functions 
  65. can return A value. ie
  66.  
  67. int main(void)
  68. {
  69.   int x;
  70.  
  71.   x = get_input();
  72.   printf("%d", x);
  73. }
  74.  
  75. int get_input()
  76. {
  77.   return(10);
  78. }
  79.  
  80. In your program you want to return several values. you can not use 
  81. return(x,y,z) as you cannot write x,y,z = get_input() in main() it makes 
  82. no sense to a C compiler(you might know what you mean).
  83.  
  84. The proper way to do this is to use variable addresses and pointers to
  85. variables, I have not got time to explain these but any good C book will
  86. take you through it. There is another way of doing things which for small
  87. programs you may find a helpfull. You can define a variable outside a
  88. function. This is called making a variable global ie all functions after
  89. its declaration can see it. This code may make it more obvious. 
  90.  
  91. /* ---- Global variables --- */
  92. int x,y,z;
  93. /* ------------------------- */
  94.  
  95. int main(void)
  96. {
  97.   get_values();
  98.   printf("%d %d %d",x,y,z);
  99. }
  100.  
  101. void get_values(void)
  102. {
  103.   x=10;
  104.   y=10;
  105.   z=10;
  106.  /* No need to return values as we are using the variables declared at 
  107. the top of the program */
  108. }
  109.  
  110. A book will take you a long way, if you have already got one then by the 
  111. looks of things get another one, try your library. 
  112.  
  113. Paul.
  114.